1. Field of the Invention
The present invention relates in general to the field of program building for generating computer code interpretable by a target hardware platform, and in particular to a method for program building, and a system for program building using predefined source files and predefined build scripts. Still more particularly, the present invention relates to a data processing program and a computer program product for program building.
2. Description of the Related Art
Computer programs that run native on central processing units without runtime software interpretation are produced when human authored source code is translated into machine code by another program called a compiler. A compiler is typically a generic program that converts valid human readable source code to machine instructions. Commercial software foundries that produce large software programs typically use automated build processes to translate many thousands of source code files into machine code.
Performance of a software solution running on a particular hardware platform is dependent on multiple factors. One factor is the quality of code generated by the compiler that is used to build the software. A state of the art compiler can be instructed to generate highly optimized code; but this requires influencing the options that are passed to the compiler.
The SAP kernel, for example, is a composition of many thousands of c-modules compiled and bound together by instructions residing in over 170 make-files. These make-files are written by SAP and are, for the most part, platform agnostic.
The basic issue is; how to build an optimized kernel given the following conflicting factors, that the used compiler requires specific options to build optimized code, and the make-files—the instructions used to build the kernel—are platform agnostic; and therefore cannot be modified to suit a particular needs of a vendor.
In the Patent Publication U.S. Pat. No. 6,427,234 B1 “SYSTEM AND METHOD FOR PERFORMING SELECTIVE DYNAMIC COMPILATION USING RUNTIME INFORMATION” by Chambers et al. a system and method for performing selective dynamic compilation using runtime information is disclosed. The disclosed system implements a declarative; annotation based dynamic compilation and contains a sophisticated form of partial evaluation binding-time analysis (BTA), including program-point-specific poly-variant division and specialization, and dynamic versions of traditional global and peephole optimizations. The system provides policies that govern the aggressiveness of specialization and caching. It allows these policies to be declaratively specified, enabling programmers to gain fine control over the dynamic compilation process. It also enables programmers to specialize programs across arbitrary edges, both at procedure boundaries and within procedures, and to specialize programs based on evaluation of arbitrary compile-time and runtime conditions. To achieve a different compiled result source files are changed. Such a source code modification has to be avoided.
In the Patent Publication U.S. Pat. No. 6,453,465 B1 “METHOD AND SYSTEM FOR COMPILING SOURCE CODE CONTAINING NATURAL LANGUAGE INSTRUCTIONS” by Klein a system and method for compiling source code comprising natural language declarations, natural language method calls, and natural language control structures into computer-executable object code is disclosed. The system and method allow the compilation of source code containing both natural language and computer language into computer-executable object code. The system and method use a component database, containing components and associated natural language instructions, to select one or more components having an instruction declaration associated with the natural language instruction. A solution manager is used to resolve ambiguities inherent in the use of natural language instructions in the source code. Although a knowledge base is used in combination with specially written source code to influence the generation of machine code the disclosed system and method are pertained to specially written source files and do not pertain to the code generation process (build) itself.
In the Patent Publication U.S. Pat. No. 5,956,513 “SYSTEM AND METHOD FOR AUTOMATED SOFTWARE BUILD CONTROL” by McLain Jr. an automated computer program application, called an automated build control application, provides an improved tool for managing the software build process. The automated build control uses the specification of a programmer's original program files as input, and automatically identifies all header, include, and other shared library files, which eliminates coding of dependencies. The automated build control identifies embedded header files, such as those which are referenced in other header files. The automated build control identifies duplicate headers so future builds can be expedited. The automated build control ensures all necessary source modules are located and available for compilation, prior to compilation. The automated build control performs comparisons of date/time stamps and identifies what source modules require recompilation. Essentially, the automated build control evaluates the compiling and linking processes prior to performing them, thus detecting any potential errors or conflicts before any time and effort is wasted. The disclosed tool for building software is similar to what most modern development tools like Microsoft visual Studio or Eclipse do when generating software by examining source files and determining dependencies. Nevertheless the disclosed system and method make no reference to a knowledgeable or of affecting an existing program build process without intervention.